export {}

// 泛型约束 --- 传入的参数基础上再增加类型限定
// 下面例子中obj指定为一个泛型，当我们访问length属性的时候就报错了
function LogLen<T>(obj:T){
    console.log(obj.length)
}

// 解决报错，指定泛型的类型范围
interface LengthObj {
    // 表示参数是一个对象，并且这个对象中一定存在length属性
    length: number
}
function lengthObj<T extends LengthObj>(obj: T){
    console.log(obj.length)
}
lengthObj('21')
lengthObj([1,2,3])
lengthObj(12)